package ewms.service;

import ewms.common.core.domain.TreeSelect;
import ewms.common.core.page.IServicePlus;
import ewms.domain.EwmsWasteType;

import java.util.List;

/**
 * 废弃物分类管理 服务层
 *
 * @author ruoyi
 */
public interface IEwmsWasteTypeService extends IServicePlus<EwmsWasteType> {
	/**
	 * 查询废弃物分类管理数据
	 *
	 * @param wasteType 废弃物分类信息
	 * @return 废弃物分类信息集合
	 */
	public List<EwmsWasteType> selectWasteTypeList(EwmsWasteType wasteType);

	/**
	 * 查询所有的危废信息(包含分类和危废两部分数据)数据
	 *
	 * @return 危废分类信息集合
	 */
	public List<EwmsWasteType> selectAllWasteList();

	/**
	 * 构建前端所需要树结构
	 *
	 * @param wasteTypeList 废弃物分类列表
	 * @return 树结构列表
	 */
	public List<EwmsWasteType> buildWasteTypeTree(List<EwmsWasteType> wasteTypeList);

	/**
	 * 构建前端所需要下拉树结构
	 *
	 * @param wasteTypeList 废弃物分类列表
	 * @return 下拉树结构列表
	 */
	public List<TreeSelect> buildWasteTypeTreeSelect(List<EwmsWasteType> wasteTypeList);

	/**
	 * 根据废弃物分类ID查询信息
	 *
	 * @param wasteTypeId 废弃物分类ID
	 * @return 废弃物分类信息
	 */
	public EwmsWasteType selectWasteTypeById(Long wasteTypeId);

	/**
	 * 根据ID查询所有子废弃物分类（正常状态）
	 *
	 * @param wasteTypeId 废弃物分类ID
	 * @return 子废弃物分类数
	 */
	public int selectNormalChildrenWasteTypeById(Long wasteTypeId);

	/**
	 * 是否存在废弃物分类子节点
	 *
	 * @param wasteTypeId 废弃物分类ID
	 * @return 结果
	 */
	public boolean hasChildByWasteTypeId(Long wasteTypeId);

	/**
	 * 校验废弃物分类名称是否唯一
	 *
	 * @param wasteType 废弃物分类信息
	 * @return 结果
	 */
	public String checkWasteTypeNameUnique(EwmsWasteType wasteType);

	/**
	 * 新增保存废弃物分类信息
	 *
	 * @param wasteType 废弃物分类信息
	 * @return 结果
	 */
	public int insertWasteType(EwmsWasteType wasteType);

	/**
	 * 修改保存废弃物分类信息
	 *
	 * @param wasteType 废弃物分类信息
	 * @return 结果
	 */
	public int updateWasteType(EwmsWasteType wasteType);

	/**
	 * 删除废弃物分类管理信息
	 *
	 * @param wasteTypeId 废弃物分类ID
	 * @return 结果
	 */
	public int deleteWasteTypeById(Long wasteTypeId);
}
